package first.niuke.simple;

/**
 * @ClassName NC125
 * @description:
 * @author: 荣燊
 * @create: 2021-06-01 22:01
 **/
public class NC125 {
    // 给定一个无序数组arr, 其中元素可正、可负、可0。给定一个整数k，求arr所有子数组中累加和为k的最长子数组长度
    // 最长子数组
    public static void main(String[] args) {
        int[] arr = {1, -2, 1, 1, 1};
        int k = 0;
        System.out.println(maxlenEqualK(arr, k));
    }

    public static int maxlenEqualK (int[] arr, int k) {
        // write code here
        int length = 0;
        // i<arr.length - length是为了时间复杂度要求
        for (int i=0; i<arr.length - length; i++) {
            int ans = 0;
            for (int j=i; j<arr.length; j++) {
                ans += arr[j];
                if (k == ans) {
                    length = Math.max(length, j-i+1);
                }
            }
        }
        return length;
    }
}
